#!/usr/bin/env python3.11
# -*- encoding: utf-8 -*-
'''
@File    :   resize_img.py
@Time    :   2024/07/30 15:48:05
@Author  :   windstarry 
@Version :   1.0
'''
# here put the import lib
import os
from PIL import Image

def transparent_back(img, threshold=10):
    """
    将图片中接近某个颜色的区域设置为透明，默认使用图片左上角10x10区域内的平均颜色作为参考。
    
    Args:
        img (PIL.Image.Image): 待处理的图片对象。
        threshold (int): 颜色差异阈值，默认为10。
    
    Returns:
        PIL.Image.Image: 处理后的图片对象，背景色为透明。
    """
    img = img.convert('RGBA')
    L, H = img.size
    # 取左上角10x10区域的平均颜色作为背景色
    total_color = [0, 0, 0, 0]
    count = 0
    for h in range(min(H, 10)):
        for l in range(min(L, 10)):
            color = img.getpixel((l, h))
            total_color = [x + y for x, y in zip(total_color, color)]
            count += 1
    background_color = tuple(c // count for c in total_color)
    
    # 遍历图片，将接近背景色的像素设置为透明
    for h in range(H):
        for l in range(L):
            color = img.getpixel((l, h))
            if sum(abs(c1 - c2) for c1, c2 in zip(color[:-1], background_color[:-1])) <= threshold:
                img.putpixel((l, h), color[:-1] + (0,))
    
    return img

if __name__ == '__main__':
    # 获取当前文件的绝对路径
    current_file_path = os.path.abspath(__file__)
    # 获取当前文件所在的目录
    current_dir = os.path.dirname(current_file_path)
    # 获取当前文件夹的上级目录
    parent_dir = os.path.dirname(current_dir)
    # 定位到上级目录下的某个文件
    path= os.path.join(parent_dir, 'Img/cover.png')
    save_path = os.path.join(parent_dir, 'Img/icon.png')
    img = Image.open(path)
    # 输出图片的尺寸
    print(img.size)
    # 输出图片的格式
    print(img.format)
    # 输出图片的模式from PIL import Image
    print(img.mode)
    # 修改背景透明
    img = transparent_back(img)
    # 缩放图片
    new_img = img.resize((180, 180))
    # 保存图片
    new_img.save(save_path)
    